#define throw0(txt) throw txt;
#define throw1(txt, param1){ \
					WCHAR msg[1024] = {0}; \
					swprintf_s(msg, 1024, L##txt, param1); \
					::OutputDebugString(msg);\
					throw msg;}
#define throw2(txt, param1, param2) { \
					WCHAR msg[1024] = {0}; \
					swprintf_s(msg, 1024, L##txt, param1, param2); \
					::OutputDebugString(msg);\
					throw msg;}
#define throw_func_fail(func, err) throw2("%s() Failed. Error: 0x%x", func, err);